// pages/notice-setting/notice-setting.ts

interface IPageData {
  noticeContent: string;
  currentLength: number;
  maxLength: number;
  isLoading: boolean;
  themeColor: {
    primary: string;
    dark: string;
  };
}

Page({
  data: {
    noticeContent: '', // 公告内容
    currentLength: 0,  // 当前输入字数
    maxLength: 200,    // 最大字数限制
    isLoading: false,  // 是否正在提交（用于控制按钮加载状态）
    themeColor: {
      primary: '#19be6b',
      dark: '#18b566',
    },
  },

  /**
   * 监听公告内容输入
   * @param event 输入事件
   */
  onNoticeInput(event: WechatMiniprogram.Input) {
    const value: string = event.detail.value;
    this.setData({
      noticeContent: value,
      currentLength: value.length,
    });
  },

  /**
   * 提交公告
   */
  submitNotice() {
    // 1. 前端基础校验
    if (!this.data.noticeContent.trim()) {
      wx.showToast({
        title: '公告内容不能为空',
        icon: 'none',
        duration: 2000,
      });
      return;
    }

    // 2. 设置加载状态，防止重复点击
    this.setData({ isLoading: true });

    // 3. 模拟网络请求
    // 在真实项目中，这里应换成 wx.request 调用你的后端接口
    console.log('开始提交公告内容:', this.data.noticeContent);
    setTimeout(() => {
      // 模拟请求成功
      const isSuccess = true; // 可改为 false 来测试失败场景

      if (isSuccess) {
        // 4a. 请求成功后的处理
        wx.showToast({
          title: '发布成功',
          icon: 'success',
          duration: 1500,
        });

        // 成功后清空表单并重置状态
        this.setData({
          isLoading: false,
          noticeContent: '',
          currentLength: 0,
        });

        // 可选：1.5秒后自动返回上一页
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);

      } else {
        // 4b. 请求失败后的处理
        this.setData({ isLoading: false });
        wx.showModal({
          title: '发布失败',
          content: '抱歉，由于网络原因或服务器错误，本次发布失败，请稍后重试。',
          showCancel: false, // 只显示确认按钮
          confirmText: '我知道了',
          confirmColor: this.data.themeColor.primary,
        });
      }
    }, 1500); // 模拟1.5秒的网络延迟
  },
});
